Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Системнй виклик stat.

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Електронні обчислювальні машини

Інформація про роботу

Рік:
2004
Тип роботи:
Лабораторна робота
Предмет:
Проектування операційних систем, утиліт і драйверів
Група:
СПР-5

Частина тексту файла

Міністерство освіти України НУ “Львівська політехніка” Кафедра ЕОМ Звіт про виконання лабораторної роботи №4 з дисципліни “Проектування операційних систем, утиліт і драйверів” Назва роботи: “Системнй виклик stat” Виконав: студент групи СПР-5 Львів – 2004 Мета: Познайомитись і навчитися використовувати системні виклики stat, access, utime операційної системи Linux. Познайомитися з утилітою stat. Призначення, синопсис та основні параметри утиліти та системних викликів stat – вивести статус файлу чи файлової системи. stat [OPTION] FILE... -f, --filesystem - вивести статус файлової системи замість статусу файлу. -c --format=FORMAT - використати специфікатор FORMAT. -L, --dereference слідувати за посиланнями. -t, --terse - друк інформації в стислій формі. int stat(const char *file_name, struct stat *buf) – отримати інформацію про файл; struct stat { dev_t st_dev; /* пристрiй */ ino_t st_ino; /* номер inode */ mode_t st_mode; /* бiти повноважень */ nlink_t st_nlink; /* кiлькiсть hard-link'iв */ uid_t st_uid; /* iдентифiкатор власника файла */ gid_t st_gid; /* iдентифiкатор групи власникiв */ dev_t st_rdev; /* тип пристрою (якщо це inode пристрою) */ off_t st_size; /* розмiр файла, в байтах */ unsigned long st_blksize; /* розмiр блоку даної файлової системи */ unsigned long st_blocks; /* кiлькiсть видiлених блокiв */ time_t st_atime; /* час останнього доступу */ time_t st_mtime; /* час останньої модифiкацiї */ time_t st_ctime; /* час останньої змiни inode */ }; int access(const char *pathname, int mode) – інформація про тип доступу користувача до файлу; int utime(const char *filename, struct utimbuf *buf) – зміна часу останнього доступу/модифікації файлу; struct utimbuf { time_t actime; /* час доступу */ time_t modtime; /* час модифікації */ }; Лістинг програми #include <stdio.h> #include <string.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <utime.h> #include <time.h> #define USING "using: \"lab4 <file_name>\"\n" #define ERROR "failed to read parameters of this file\n" void demo_access(char *); void demo_stat(char *); void demo_utime(char *); int main(int argc, char *argv[]) { if(argc != 2) { fprintf(stderr,USING); exit(-1); } if(access(argv[1],0) == -1) { fprintf(stderr,ERROR); exit(-1); } demo_access(argv[1]); demo_stat(argv[1]); demo_utime(argv[1]); puts("File status after reset create- and modification-time:"); demo_stat(argv[1]); exit(0); } void demo_access(char *path) { char yes[] = "yes", no[] = "no", *flag; puts("system call \"accsess\":"); printf("The file %s:\n", path); if(access(path,4) == 0) flag = yes; else flag = no; printf("\tread access:\t%s\n", flag); if(access(path,2) == 0) flag = yes; else flag = no; printf("\twrite access:\t%s\n", flag); if(access(path,1) == 0) flag = yes; else flag = no; printf("\texecute access:\t%s\n", flag); putchar('\n'); } void demo_stat(char *path) { struct stat buf; time_t t; puts("system call \"stat\":"); printf("The file %s:\n",path); stat(path,&buf); printf("\tlength:\t\t\t%d\n", buf.st_size); t = buf.st_atime; printf("\tlast access:\t\t%s", ctime(&t)); t = buf.st_mtime; printf("\tlast modification:\t%s", ctime(&t)); putchar('\n'); } void demo_utime(char *path) { struct utimbuf times; times.actime = 0; times.modtime = 0; utime(path,&times); } В дану програму необхідно передати із командної стрічки назву файлу, про який збирається інформація. Спочатку буде видана інформація про права доступу до файлу, отримана за допомогою системного виклику accsess(). Потім буде видана деяка інформація, отримана шляхом використання stat(). Після цього системним викликом utime() час останнього доступу до файлу та останньої його модифікації буде встановлений в нуль, і ще раз викликається stat(), щоби пересвідчитися в цьому. Висновок Під час в...
Антиботан аватар за замовчуванням

01.01.1970 03:01

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини